using System;

namespace JGSY.CMS.LowCode.Platform.Application.DTOs
{
    /// <summary>
    /// 导航菜单数据传输对象
    /// 用于网站导航菜单的数据传输
    /// </summary>
    public class NavigationDto
    {
        /// <summary>
        /// 导航ID
        /// </summary>
        public long Id { get; set; }
        
        /// <summary>
        /// 导航标题
        /// </summary>
        public string Title { get; set; } = string.Empty;
        
        /// <summary>
        /// 导航链接
        /// </summary>
        public string Url { get; set; } = string.Empty;
        
        /// <summary>
        /// 导航类型 (internal, external, category, page)
        /// </summary>
        public string Type { get; set; } = "internal";
        
        /// <summary>
        /// 父导航ID
        /// </summary>
        public long? ParentId { get; set; }
        
        /// <summary>
        /// 父导航标题
        /// </summary>
        public string? ParentTitle { get; set; }
        
        /// <summary>
        /// 导航层级
        /// </summary>
        public int Level { get; set; } = 0;
        
        /// <summary>
        /// 排序权重
        /// </summary>
        public int SortWeight { get; set; } = 0;
        
        /// <summary>
        /// 导航图标
        /// </summary>
        public string? Icon { get; set; }
        
        /// <summary>
        /// 导航图片
        /// </summary>
        public string? Image { get; set; }
        
        /// <summary>
        /// 导航描述
        /// </summary>
        public string? Description { get; set; }
        
        /// <summary>
        /// 目标窗口 (_self, _blank, _parent, _top)
        /// </summary>
        public string Target { get; set; } = "_self";
        
        /// <summary>
        /// CSS类名
        /// </summary>
        public string? CssClass { get; set; }
        
        /// <summary>
        /// 是否启用
        /// </summary>
        public bool IsEnabled { get; set; } = true;
        
        /// <summary>
        /// 是否在桌面端显示
        /// </summary>
        public bool ShowOnDesktop { get; set; } = true;
        
        /// <summary>
        /// 是否在移动端显示
        /// </summary>
        public bool ShowOnMobile { get; set; } = true;
        
        /// <summary>
        /// 是否需要登录
        /// </summary>
        public bool RequireLogin { get; set; } = false;
        
        /// <summary>
        /// 权限要求 (JSON格式)
        /// </summary>
        public string? Permissions { get; set; }
        
        /// <summary>
        /// 角色要求 (JSON格式)
        /// </summary>
        public string? Roles { get; set; }
        
        /// <summary>
        /// 子导航数量
        /// </summary>
        public int ChildrenCount { get; set; } = 0;
        
        /// <summary>
        /// 点击次数
        /// </summary>
        public int ClickCount { get; set; } = 0;
        
        /// <summary>
        /// SEO标题
        /// </summary>
        public string? SeoTitle { get; set; }
        
        /// <summary>
        /// SEO关键词
        /// </summary>
        public string? SeoKeywords { get; set; }
        
        /// <summary>
        /// SEO描述
        /// </summary>
        public string? SeoDescription { get; set; }
        
        /// <summary>
        /// 自定义标签 (JSON格式)
        /// </summary>
        public string? Tags { get; set; }
        
        /// <summary>
        /// 版本号
        /// </summary>
        public string Version { get; set; } = "1.0.0";
        
        /// <summary>
        /// 状态
        /// </summary>
        public string Status { get; set; } = "Active";
        
        /// <summary>
        /// 创建者ID
        /// </summary>
        public long? CreatedById { get; set; }
        
        /// <summary>
        /// 创建者姓名
        /// </summary>
        public string? CreatedByName { get; set; }
        
        /// <summary>
        /// 更新者ID
        /// </summary>
        public long? UpdatedById { get; set; }
        
        /// <summary>
        /// 更新者姓名
        /// </summary>
        public string? UpdatedByName { get; set; }
        
        /// <summary>
        /// 创建时间
        /// </summary>
        public DateTime CreatedAt { get; set; }
        
        /// <summary>
        /// 更新时间
        /// </summary>
        public DateTime? UpdatedAt { get; set; }
        
        /// <summary>
        /// 最后点击时间
        /// </summary>
        public DateTime? LastClickedAt { get; set; }
        
        /// <summary>
        /// 扩展属性 (JSON格式)
        /// </summary>
        public string? ExtendedProperties { get; set; }
    }
}
